Bienvenid@s!!

En la reunión de hoy aprenderemos acerca de python y sus cimientos. Veremos qué es Python, Ipython y Jupyter; comenzaremos con conceptos básicos de objetos, variables, operaciones. También jugaremos con un módulo de Python llamado Turtle el cuál nos ayudará an entender (espero!) un poco mejor esto de programación orientada a objetos.

En Python existen programas ya escritos que nos permiten agregar a nuestro código un sin fin de atributos. Esto generalmente hace la tarea de programar aún más sencilla, ya que no tenemos que implementar desde cero ciertas funciones de uso cotidiano. A esto se le llama módulo en Python.

Hoy vamos a usar un módulo que aparte de ser divertido nos ayuda a desarrollar nuestro pensamiento computacional, este módulo se llama Turtle y nos permite dibujar formas o patrones.

Vamos a empezar con Turtle. Para esto tenemos que importar un módulo de la siguiente manera:

  1. Abre una consola de Ipython
  2. En la consola, después de los >>> escribe import turtle y da enter

Lo que acabamos de hacer es decirle a python: ...'oye quiero usar las funciones y objetos que tiene un programa llamado Turtle'...

Python lo que hace (si es que todo sale bien) es responder con: ...'ok'... que se puede ver en la forma de >>> o In[n]: si es que usamos ipython

Ahora ya podemos empezar a crear nuestro programa para dibujar.

Ejercicio

Escribe los siguientes comandos en tu terminal y pon atención a lo que va pasando en la ventana


In [ ]:
import turtle
ventana = turtle.Screen()
ventana.bgcolor('lightblue')
ventana.title('Hello Erika!')

erika = turtle.Turtle()
erika.color('blue')
erika.pensize(5)

erika.forward(100)
erika.left(90)
erika.forward(100)

Ahora cambia el color de tu ventana, del tamaño y color del trazo, y si quieres también crea otra tortuga con tu nombre. Luego intenta dibujar un cuadrado, un triángulo y un hexágono

Ahora vamos a ver qué es lo que estuvimos usando.


In [1]:
import turtle

In [ ]:
erika = turtle

Ipython: la hermana amable de Python

Veamos que tiene que decir Wikipedia acerca de Ipython: ..."IPython es un shell interactivo que añade funcionalidades extra al modo interactivo incluido con Python, como resaltado de líneas y errores mediante colores, una sintaxis adicional para el shell, autocompletado mediante tabulador de variables, módulos y atributos; entre otras funcionalidades"...

Como bien dice la wikipedia, ipython es una variante de python que es mucho más amable con el usuario. Te dice más acerca de los errores que puedas cometer y te ayuda a completar nombres cuando se te olvidan. El código que se corre en esta libreta de Jupyter es con Ipython


In [3]:
turtle.Turtle?

In [4]:
%quickref

El planeta Jupyter de Python

Esto que ves aquí es una libreta de Jupyter ejecutando Ipython. Aquí puedes escribir texto (al estilo Markdown) y correr líneas de código que escribas, también hay funciones mágicas que te ayudan a hacer cosas como mostrar las gráficas que creas directamente en la libreta (generalmente Ipython genera una ventana nueva con la imagen lo cual es bastante molesto cuando estás con la libreta...)

Si te gusta leer en inglés y quieres más información puedes consultar el siguiente enlace


In [5]:
#Veamos las funciones mágicas de la libreta
%magic

Finalmente a Trabajar

Números en Python

Hay dos tipos de número en Python los cuales se llaman "integers" y "floats". Estos números pueden ser utilizados para realizar operaciones matemáticas como lo harías con cualquier calculadora.


In [6]:
type(5)


Out[6]:
int

In [7]:
type(5.0)


Out[7]:
float

In [8]:
5+5


Out[8]:
10

In [9]:
5-5.0 
#¿Notas algo raro en este resultado?


Out[9]:
0.0

In [ ]:
5.0 * 5

In [10]:
#¿Qué crees que va a dar de resultado esta operación?
5/5


Out[10]:
1.0

In [11]:
#¿Cómo se puede hacer para que la división nos dé integer en lugar de float?
#Prueba esto
5//5


Out[11]:
1

Pregunta 1

¿Qué crees que pasaría si le pedimos a python lo siguiente?

5.0//5.0


In [12]:
5.0//5.0


Out[12]:
1.0

Pregunta 2

¿Crees que obtendrías el mismo resultado si sólo uno de los dividendos fuera un float?


In [13]:
5.0//5


Out[13]:
1.0

Ahora imagina que queremos saber cuál es el residuo de una división. Python tiene un operador que se ve así "%" Veamos cómo funciona...


In [14]:
#¿Cuánto nos queda de residuo si dividimos 25%5?
25%5


Out[14]:
0

In [15]:
#¿Cuánto nos queda de residuo si dividimos 25%7?
25%7


Out[15]:
4

Pregunta 3

¿Qué pasaría si alguno de los dividendos fuera float?


In [16]:
25%7.0


Out[16]:
4.0

Pregunta 4

¿Cómo podríamos obtener la potencia de un número y su raíz cuadrada?


In [ ]:
#Pista: doble estrella

In [17]:
5**2


Out[17]:
25

In [ ]:


In [ ]:
#Pista: módulo math

Al igual que en matemáticas, si necesitamos que las operaciones se hagan en un orden definido debemos poner la expresión que queremos que se realice primero entre paréntesis.

Por ejemplo si queremos que una suma se realice antes que una multiplicación y el resultado de esta se reste a otro número usaríamos una expresión parecida a esta:

((a + b) * c) - d


In [ ]:

Valores Booleanos y comparaciones

En python no sólo podemos manejar números, también podemos manejar valores booleanos de tipo Falso-Verdadero y hacer operaciones con ellos


In [ ]:
True

In [ ]:
False

In [ ]:
type(True)

In [ ]:
True and False

In [ ]:
True or True

In [ ]:
True > False

In [ ]:
#Un momento, si True es mayor que False ¿cómo es que python representa internamente a estos valores booleanos?
True == 1

In [ ]:
False == 0

In [ ]:
#¿Entonces se pueden sumar los valores booleanos? ¡Probemos!
True + True + False

In [ ]:
False - True

In [ ]:
True + True != 1

Como podrás darte cuenta, las operaciones y comparaciones que puedes hacer en estos valores son bastantes y puedes ir aumentando la complejidad usando paréntesis y combinando con lo que aprendiste a hacer de operaciones con python

Nota "==" vs "is"

Cuando quieres saber si un objeto es exactamente ese objeto hay un operador que se llama "is". Nada más que es importante no confundirlo con el operador "==" ya que este a diferencia del "is" te dice si el valor de un objeto equivale a otro. Suena confuso pero tal vez este ejemplo lo clarifique


In [ ]:
#Ya vimos que El valor de True "equivale" a 1
True == 1

In [ ]:
#Ahora nos preguntamos si True "es" 1
True is 1

In [ ]:
#y que tal si ahora preguntamos si True "es" True
True is True

Strings y todo lo que puedes hacer con palabras

Los strings son cadenas de caracteres, palabras o frases que en python se declaran al ponerlos dentro de comillas, ya sea simples o dobles


In [ ]:
"Esto es un string"

In [ ]:
'Esto también'

In [ ]:
#Esto también es un string
'2'

In [ ]:
#y en python 3 se pueden concatenar estas series de caracteres sólo poniéndolos continuamente. Hay que notar que un 
#espacio también es un caracter...

"Los números"' '"y"' ' 'símbolos'" "'también '"se usan"' ''3456%$#%'

Puedes crear espacios que luego vas a llenar en estos strings con un método que se llama format


In [ ]:
'{} of the {}'.format('75%', 'World')

In [ ]:
# También puedes usar palabras clave si necesitas poner una misma palabra muchas veces

'{sujeto} camina, {sujeto} juega, {sujeto} duerme con todos {predicado}'.format(sujeto = 'El perro', predicado = 'nosotros')

In [ ]:
print('Esta función imprime')

Variables: los cajones de python

Hasta ahora hemos visto que podemos hacer operaciones sobre diferentes objetos de python, pero que pasa cuando queremos que una operación o un valor se quede disponible para que los usemos durante todo programa. En python hay algo que se llama variable y está formada por un espacio en el sistema de almacenaje que está asociado a un nombre. Ese espacio contiene una cantidad o información conocida o desconocida, es decir un valor.

Veamos algunos ejemplos.


In [ ]:
variable_1 = 5 + 5

In [ ]:
variable_2 = True

In [ ]:
variable_1 + variable_2

In [ ]:
cajón = 'Hola a todos'

In [ ]:
cajón

In [ ]:
print(cajón)

In [ ]:
cajón == variable_1

In [ ]:

Hasta aquí termina la reunión del día de hoy sigan practicando en casa y si tienen dudas pueden escribir al grupo y ente tod@s resolverlas!

Espero que hayan aprendido algo el día de hoy!